-
Notifications
You must be signed in to change notification settings - Fork 282
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: vfox backend #2187
feat: vfox backend #2187
Conversation
427208b
to
9303f85
Compare
7f42092
to
bb6be26
Compare
8dc0899
to
db62562
Compare
1163dc4
to
b1c2ed4
Compare
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesCodacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more |
cd3ae8b
to
9fee860
Compare
diff --git a/Cargo.lock b/Cargo.lock index bd3fea9db..b582b14fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,30 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -153,6 +177,12 @@ dependencies = [ "tokio", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.3.0" @@ -252,6 +282,27 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "calm_io" version = "0.1.1" @@ -315,7 +366,7 @@ checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" dependencies = [ "chrono", "chrono-tz-build", - "phf", + "phf 0.11.2", ] [[package]] @@ -325,8 +376,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" dependencies = [ "parse-zoneinfo", - "phf", - "phf_codegen", + "phf 0.11.2", + "phf_codegen 0.11.2", ] [[package]] @@ -338,6 +389,16 @@ dependencies = [ "envmnt", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clap" version = "4.5.16" @@ -369,7 +430,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -421,7 +482,7 @@ dependencies = [ "nom", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -483,6 +544,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + [[package]] name = "contracts" version = "0.6.3" @@ -519,6 +586,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -563,6 +645,29 @@ dependencies = [ "typenum", ] +[[package]] +name = "cssparser" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b3df4f93e5fbbe73ec01ec8d3f68bba73107993a5b1e7519273c32db9b0d5be" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.11.2", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.75", +] + [[package]] name = "ctor" version = "0.2.8" @@ -570,7 +675,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -597,9 +702,15 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] +[[package]] +name = "deflate64" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" + [[package]] name = "demand" version = "1.2.4" @@ -638,7 +749,18 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", ] [[package]] @@ -667,6 +789,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -677,7 +800,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -692,6 +815,21 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + [[package]] name = "duct" version = "0.13.7" @@ -735,6 +873,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ego-tree" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" + [[package]] name = "either" version = "1.13.0" @@ -750,6 +894,15 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + [[package]] name = "env_filter" version = "0.1.2" @@ -787,6 +940,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" version = "0.2.8" @@ -945,6 +1108,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + [[package]] name = "futures" version = "0.3.30" @@ -1001,7 +1174,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -1034,6 +1207,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1044,6 +1226,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -1106,6 +1297,25 @@ dependencies = [ "walkdir", ] +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.4.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1145,6 +1355,15 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "home" version = "0.5.9" @@ -1168,6 +1387,32 @@ dependencies = [ "wmi", ] +[[package]] +name = "homedir" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bed305c13ce3829a09d627f5d43ff738482a09361ae4eb8039993b55fb10e5e" +dependencies = [ + "cfg-if", + "nix 0.26.4", + "widestring", + "windows 0.57.0", +] + +[[package]] +name = "html5ever" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 2.0.75", +] + [[package]] name = "http" version = "1.1.0" @@ -1232,6 +1477,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2", "http", "http-body", "httparse", @@ -1308,7 +1554,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1393,6 +1639,15 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "insta" version = "1.39.0" @@ -1428,6 +1683,15 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -1553,6 +1817,16 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "lockfree-object-pool" version = "0.1.6" @@ -1565,6 +1839,66 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "lua-src" +version = "547.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edaf29e3517b49b8b746701e5648ccb5785cde1c119062cbabbc5d5cd115e42" +dependencies = [ + "cc", +] + +[[package]] +name = "luajit-src" +version = "210.5.9+04dca79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e03d48e8d8c11c297d49ea6d2cf6cc0d7657eb3d175219bba47d59a601b7ca9" +dependencies = [ + "cc", + "which", +] + +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" +dependencies = [ + "log", + "phf 0.11.2", + "phf_codegen 0.11.2", + "string_cache", + "string_cache_codegen", + "tendril", +] + [[package]] name = "matchers" version = "0.1.0" @@ -1609,7 +1943,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -1683,7 +2017,7 @@ dependencies = [ "indicatif", "indoc", "insta", - "itertools", + "itertools 0.13.0", "log", "nix 0.29.0", "num_cpus", @@ -1724,12 +2058,59 @@ dependencies = [ "url", "usage-lib", "versions", + "vfox", "walkdir", "which", "xx", "zip", ] +[[package]] +name = "mlua" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d111deb18a9c9bd33e1541309f4742523bfab01d276bfa9a27519f6de9c11dc7" +dependencies = [ + "bstr", + "erased-serde", + "futures-util", + "mlua-sys", + "mlua_derive", + "num-traits", + "once_cell", + "rustc-hash", + "serde", + "serde-value", +] + +[[package]] +name = "mlua-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab7a5b4756b8177a2dfa8e0bbcde63bd4000afbc4ab20cbb68d114a25470f29" +dependencies = [ + "cc", + "cfg-if", + "lua-src", + "luajit-src", + "pkg-config", +] + +[[package]] +name = "mlua_derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09697a6cec88e7f58a02c7ab5c18c611c6907c8654613df9cc0192658a4fb859" +dependencies = [ + "itertools 0.12.1", + "once_cell", + "proc-macro-error", + "proc-macro2", + "quote", + "regex", + "syn 2.0.75", +] + [[package]] name = "native-tls" version = "0.2.12" @@ -1747,6 +2128,12 @@ dependencies = [ "tempfile", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.26.4" @@ -1876,7 +2263,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -1897,6 +2284,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + [[package]] name = "os_pipe" version = "1.2.1" @@ -1932,6 +2328,29 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -1965,6 +2384,16 @@ dependencies = [ "once_cell", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2002,7 +2431,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2026,13 +2455,33 @@ dependencies = [ "indexmap 2.4.0", ] +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + [[package]] name = "phf" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ - "phf_shared", + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", ] [[package]] @@ -2041,8 +2490,18 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand", ] [[package]] @@ -2051,10 +2510,32 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared", + "phf_shared 0.11.2", "rand", ] +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.75", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + [[package]] name = "phf_shared" version = "0.11.2" @@ -2081,7 +2562,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2133,6 +2614,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "predicates" version = "3.1.2" @@ -2384,9 +2871,11 @@ dependencies = [ "async-compression", "base64", "bytes", + "encoding_rs", "futures-channel", "futures-core", "futures-util", + "h2", "http", "http-body", "http-body-util", @@ -2411,6 +2900,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", @@ -2585,6 +3075,28 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scraper" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" +dependencies = [ + "ahash", + "cssparser", + "ego-tree", + "getopts", + "html5ever", + "once_cell", + "selectors", + "tendril", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -2608,6 +3120,25 @@ dependencies = [ "libc", ] +[[package]] +name = "selectors" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" +dependencies = [ + "bitflags 2.6.0", + "cssparser", + "derive_more", + "fxhash", + "log", + "new_debug_unreachable", + "phf 0.10.1", + "phf_codegen 0.10.0", + "precomputed-hash", + "servo_arc", + "smallvec", +] + [[package]] name = "self-replace" version = "1.4.0" @@ -2657,6 +3188,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_derive" version = "1.0.208" @@ -2665,7 +3206,7 @@ checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2701,6 +3242,26 @@ dependencies = [ "serde", ] +[[package]] +name = "servo_arc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d036d71a959e00c77a63538b90a6c2390969f9772b096ea837205c6bd0491a44" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha2" version = "0.10.8" @@ -2864,6 +3425,38 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + [[package]] name = "strsim" version = "0.11.1" @@ -2889,7 +3482,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2911,9 +3504,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", "quote", @@ -2936,6 +3529,27 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tabled" version = "0.16.0" @@ -2985,6 +3599,17 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + [[package]] name = "tera" version = "1.20.0" @@ -3050,7 +3675,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3061,7 +3686,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "test-case-core", ] @@ -3084,7 +3709,7 @@ checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3104,7 +3729,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3175,11 +3800,25 @@ dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys 0.52.0", ] +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + [[package]] name = "tokio-native-tls" version = "0.3.1" @@ -3339,6 +3978,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + [[package]] name = "typenum" version = "1.17.0" @@ -3466,7 +4111,7 @@ dependencies = [ "clap", "heck 0.5.0", "indexmap 2.4.0", - "itertools", + "itertools 0.13.0", "kdl", "log", "miette", @@ -3478,6 +4123,12 @@ dependencies = [ "xx", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3508,11 +4159,32 @@ version = "6.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f25d498b63d1fdb376b4250f39ab3a5ee8d103957346abacd911e2d8b612c139" dependencies = [ - "itertools", + "itertools 0.13.0", "nom", "serde", ] +[[package]] +name = "vfox" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cac975b54f4b0f6cc67ddaaf3414ce9a763a734e6a78ca34a3add26a5335126e" +dependencies = [ + "homedir 0.3.3", + "indexmap 2.4.0", + "itertools 0.13.0", + "log", + "mlua", + "once_cell", + "reqwest", + "scraper", + "serde_json", + "thiserror", + "tokio", + "url", + "xx", +] + [[package]] name = "vte" version = "0.10.1" @@ -3590,7 +4262,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "wasm-bindgen-shared", ] @@ -3624,7 +4296,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3709,9 +4381,19 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", - "windows-implement", - "windows-interface", + "windows-core 0.52.0", + "windows-implement 0.52.0", + "windows-interface 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -3724,6 +4406,18 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-implement" version = "0.52.0" @@ -3732,7 +4426,18 @@ checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", ] [[package]] @@ -3743,7 +4448,27 @@ checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3930,7 +4655,7 @@ dependencies = [ "log", "serde", "thiserror", - "windows", + "windows 0.52.0", ] [[package]] @@ -3950,14 +4675,40 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9960db6d05795260d426061b0a962282cf67c3cdc81656731d0f646807c26237" dependencies = [ + "bzip2", "duct", "filetime", + "flate2", "globwalk", - "homedir", + "homedir 0.2.1", "log", "miette", "regex", + "reqwest", + "sha2", + "tar", "thiserror", + "tokio", + "xz", + "zip", +] + +[[package]] +name = "xz" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c887690ff2a2e233e8e49633461521f98ec57fbff9d59a884c9a4f04ec1da34" +dependencies = [ + "xz2", +] + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", ] [[package]] @@ -3984,7 +4735,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3992,6 +4743,20 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] [[package]] name = "zip" @@ -3999,15 +4764,27 @@ version = "2.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" dependencies = [ + "aes", "arbitrary", + "bzip2", + "constant_time_eq", "crc32fast", "crossbeam-utils", + "deflate64", "displaydoc", "flate2", + "hmac", "indexmap 2.4.0", + "lzma-rs", "memchr", + "pbkdf2", + "rand", + "sha1", "thiserror", + "time", + "zeroize", "zopfli", + "zstd", ] [[package]] @@ -4034,3 +4811,31 @@ dependencies = [ "once_cell", "simd-adler32", ] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 16a4ee661..2fa678499 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,6 +119,7 @@ toml_edit = { version = "0.22.12", features = ["parse"] } url = "2.5.0" usage-lib = { version = "0.3", features = ["clap"] } versions = { version = "6.2.0", features = ["serde"] } +vfox = "0.1.0" walkdir = "2.5.0" which = "6.0.1" xx = { version = "1.0.0", features = ["glob"] } diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 2a8bc978b..c43bf7c12 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -35,6 +35,7 @@ pub mod npm; pub mod pipx; pub mod spm; pub mod ubi; +pub mod vfox; pub type ABackend = Arc<dyn Backend>; pub type BackendMap = BTreeMap<String, ABackend>; @@ -63,6 +64,7 @@ pub enum BackendType { Pipx, Spm, Ubi, + Vfox, } impl Display for BackendType { @@ -104,6 +106,7 @@ fn list_installed_backends() -> eyre::Result<BackendList> { BackendType::Pipx => Arc::new(pipx::PIPXBackend::from_arg(ba)) as ABackend, BackendType::Spm => Arc::new(spm::SPMBackend::from_arg(ba)) as ABackend, BackendType::Ubi => Arc::new(ubi::UbiBackend::from_arg(ba)) as ABackend, + BackendType::Vfox => Arc::new(vfox::VfoxBackend::from_arg(ba)) as ABackend, } }) .filter(|f| f.fa().backend_type != BackendType::Asdf) @@ -136,6 +139,7 @@ pub fn get(fa: &BackendArg) -> ABackend { BackendType::Pipx => Arc::new(pipx::PIPXBackend::from_arg(fa)), BackendType::Spm => Arc::new(spm::SPMBackend::from_arg(fa)), BackendType::Ubi => Arc::new(ubi::UbiBackend::from_arg(fa)), + BackendType::Vfox => Arc::new(vfox::VfoxBackend::from_arg(fa)) as ABackend, }) .clone() } diff --git a/src/backend/vfox.rs b/src/backend/vfox.rs new file mode 100644 index 000000000..dea7e41dd --- /dev/null +++ b/src/backend/vfox.rs @@ -0,0 +1,116 @@ +use eyre::{eyre, Report}; +use std::collections::BTreeMap; +use std::env; +use std::fmt::Debug; +use tokio::runtime::Runtime; +use url::Url; + +use crate::backend::{Backend, BackendType}; +use crate::cache::CacheManager; +use crate::cli::args::BackendArg; +use crate::config::{Config, Settings}; +use crate::dirs; +use crate::install_context::InstallContext; +use crate::toolset::{ToolVersion, Toolset}; +use vfox::Vfox; + +#[derive(Debug)] +pub struct VfoxBackend { + fa: BackendArg, + vfox: Vfox, + remote_version_cache: CacheManager<Vec<String>>, +} + +impl Backend for VfoxBackend { + fn get_type(&self) -> BackendType { + BackendType::Vfox + } + + fn fa(&self) -> &BackendArg { + &self.fa + } + + fn _list_remote_versions(&self) -> eyre::Result<Vec<String>> { + self.remote_version_cache + .get_or_try_init(|| { + let plugin = self.vfox.install_plugin_from_url(&self.get_url()?)?; + let versions = self + .runtime()? + .block_on(self.vfox.list_available_versions(&plugin.name))?; + Ok(versions + .into_iter() + .rev() + .map(|v| v.version) + .collect::<Vec<String>>()) + }) + .cloned() + } + + fn install_version_impl(&self, ctx: &InstallContext) -> eyre::Result<()> { + let settings = Settings::get(); + settings.ensure_experimental("vfox backend")?; + let plugin = self.vfox.install_plugin_from_url(&self.get_url()?)?; + self.runtime()?.block_on(self.vfox.install( + &plugin.name, + &ctx.tv.version, + ctx.tv.install_path(), + ))?; + Ok(()) + } + + fn exec_env( + &self, + _config: &Config, + _ts: &Toolset, + tv: &ToolVersion, + ) -> eyre::Result<BTreeMap<String, String>> { + Ok(self + .runtime()? + .block_on(self.vfox.env_keys(self.name(), &tv.version))? + .into_iter() + .map(|envkey| (envkey.key, envkey.value)) + .collect()) + } +} + +fn vfox_to_url(version: &str) -> eyre::Result<Url> { + let res = if let Some(caps) = regex!(r#"^([^/]+)/([^/]+)$"#).captures(version) { + let user = caps.get(1).unwrap().as_str(); + let repo = caps.get(2).unwrap().as_str(); + format!("https://github.com/{user}/{repo}").parse() + } else { + version.to_string().parse() + }; + res.map_err(|e| eyre!("Invalid version: {}: {}", version, e)) +} + +impl VfoxBackend { + pub fn new(name: String) -> Self { + let fa = BackendArg::new(BackendType::Vfox, &name); + let mut vfox = Vfox::new(); + vfox.plugin_dir = dirs::PLUGINS.to_path_buf(); + vfox.cache_dir = dirs::CACHE.to_path_buf(); + vfox.download_dir = dirs::DOWNLOADS.to_path_buf(); + vfox.install_dir = dirs::INSTALLS.to_path_buf(); + vfox.temp_dir = env::temp_dir().join("mise-vfox"); + Self { + vfox, + remote_version_cache: CacheManager::new( + fa.cache_path.join("remote_versions-$KEY.msgpack.z"), + ), + fa, + } + } + + fn runtime(&self) -> eyre::Result<Runtime, Report> { + let rt = tokio::runtime::Builder::new_current_thread() + .enable_time() + .enable_io() + .build()?; + Ok(rt) + } + + fn get_url(&self) -> eyre::Result<Url> { + vfox_to_url(&self.fa.name) + } +} diff --git a/src/cli/args/backend_arg.rs b/src/cli/args/backend_arg.rs index 3bad37d9d..508a36729 100644 --- a/src/cli/args/backend_arg.rs +++ b/src/cli/args/backend_arg.rs @@ -124,6 +124,7 @@ mod tests { let cargo = |s, id, name| t(s, id, name, BackendType::Cargo); // let core = |s, id, name| t(s, id, name, BackendType::Core); let npm = |s, id, name| t(s, id, name, BackendType::Npm); + let vfox = |s, id, name| t(s, id, name, BackendType::Vfox); asdf("asdf:poetry", "asdf:poetry", "poetry"); asdf("poetry", "poetry", "poetry"); @@ -132,6 +133,11 @@ mod tests { // core("node", "node", "node"); npm("npm:@antfu/ni", "npm:@antfu/ni", "@antfu/ni"); npm("npm:prettier", "npm:prettier", "prettier"); + vfox( + "vfox:version-fox/vfox-nodejs", + "vfox:version-fox/vfox-nodejs", + "version-fox/vfox-nodejs", + ); } #[test] @@ -148,5 +154,10 @@ mod tests { t("cargo:eza", "cargo-eza"); t("npm:@antfu/ni", "npm-antfu-ni"); t("npm:prettier", "npm-prettier"); + t( + "vfox:version-fox/vfox-nodejs", + "vfox-version-fox-vfox-nodejs", + ); + t("vfox:version-fox/nodejs", "vfox-version-fox-nodejs"); } } diff --git a/src/cli/backends/snapshots/mise__cli__backends__ls__tests__backends_list.snap b/src/cli/backends/snapshots/mise__cli__backends__ls__tests__backends_list.snap index 31f7a741b..5ef5c807b 100644 --- a/src/cli/backends/snapshots/mise__cli__backends__ls__tests__backends_list.snap +++ b/src/cli/backends/snapshots/mise__cli__backends__ls__tests__backends_list.snap @@ -9,3 +9,4 @@ npm pipx spm ubi +vfox diff --git a/src/cli/snapshots/mise__cli__trust__tests__trust-6.snap b/src/cli/snapshots/mise__cli__trust__tests__trust-6.snap deleted file mode 100644 index e650db175..000000000 --- a/src/cli/snapshots/mise__cli__trust__tests__trust-6.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/cli/trust.rs -expression: output ---- -mise untrusted ~/cwd/.test-tool-versions diff --git a/src/registry.rs b/src/registry.rs index 15b767f65..6747bc9a6 100644 --- a/src/registry.rs +++ b/src/registry.rs @@ -2,12 +2,46 @@ use std::collections::BTreeMap; use once_cell::sync::Lazy; +#[cfg(unix)] const _REGISTRY: &[(&str, &str)] = &[ ("ubi", "cargo:ubi"), ("cargo-binstall", "cargo:cargo-binstall"), // ("elixir", "asdf:mise-plugins/mise-elixir"), ]; +#[cfg(windows)] +const _REGISTRY: &[(&str, &str)] = &[ + ("bun", "vfox:ahai-code/vfox-bun"), + ("cargo-binstall", "cargo:cargo-binstall"), + ("cmake", "vfox:version-fox/vfox-cmake"), + ("crystal", "vfox:yanecc/vfox-crystal"), + ("dart", "vfox:version-fox/vfox-dart"), + ("deno", "vfox:version-fox/vfox-deno"), + ("dotnet", "vfox:version-fox/vfox-dotnet"), + ("elixir", "vfox:version-fox/vfox-elixir"), + ("erlang", "vfox:version-fox/vfox-erlang"), + ("etcd", "vfox:version-fox/vfox-etcd"), + ("flutter", "vfox:version-fox/vfox-flut"), + ("golang", "vfox:version-fox/vfox-golang"), + ("gradle", "vfox:version-fox/vfox-gradle"), + ("groovy", "vfox:version-fox/vfox-groovy"), + ("java", "vfox:version-fox/vfox-java"), + ("julia", "vfox:ahai-code/vfox-julia"), + ("kotlin", "vfox:version-fox/vfox-kotlin"), + ("kubectl", "vfox:ahai-code/vfox-kubectl"), + ("maven", "vfox:version-fox/vfox-maven"), + ("mongo", "vfox:yeshan333/vfox-mongo"), + ("php", "vfox:version-fox/vfox-php"), + ("protobuf", "vfox:ahai-code/vfox-protobuf"), + ("python", "vfox:version-fox/vfox-python"), + ("ruby", "vfox:yanecc/vfox-ruby"), + ("scala", "vfox:version-fox/vfox-scala"), + ("terraform", "vfox:enochchau/vfox-terraform"), + ("ubi", "cargo:ubi"), + ("vlang", "vfox:ahai-code/vfox-vlang"), + ("zig", "vfox:version-fox/vfox-zig"), +]; + pub static REGISTRY: Lazy<BTreeMap<&str, String>> = Lazy::new(|| { // TODO: make sure core plugins can be overridden with this enabled // let core = CORE_PLUGINS
|
[2024.8.11](https://github.com/jdx/mise/compare/v2024.8.10..v2024.8.11) - 2024-08-19 🐛 Bug Fixes - bump xx by [@jdx](https://github.com/jdx) in [9a9d3c1](jdx/mise@9a9d3c1) [2024.8.10](https://github.com/jdx/mise/compare/v2024.8.9..v2024.8.10) - 2024-08-18 🚀 Features - python on windows by [@jdx](https://github.com/jdx) in [2d4cee2](jdx/mise@2d4cee2) 🐛 Bug Fixes - hide non-working core plugins on windows by [@jdx](https://github.com/jdx) in [16a08fc](jdx/mise@16a08fc) - windows compat by [@jdx](https://github.com/jdx) in [2084a37](jdx/mise@2084a37) - vfox tweaks by [@jdx](https://github.com/jdx) in [c260ab2](jdx/mise@c260ab2) - remove windows warning by [@jdx](https://github.com/jdx) in [9be937e](jdx/mise@9be937e) 📚 Documentation - windows by [@jdx](https://github.com/jdx) in [437b63c](jdx/mise@437b63c) 🧪 Testing - fixing tests by [@jdx](https://github.com/jdx) in [1206497](jdx/mise@1206497) - reset test by [@jdx](https://github.com/jdx) in [c740cfd](jdx/mise@c740cfd) 🔍 Other Changes - clippy by [@jdx](https://github.com/jdx) in [ee005ff](jdx/mise@ee005ff) - fix windows build by [@jdx](https://github.com/jdx) in [28c5cb6](jdx/mise@28c5cb6) - set GITHUB_TOKEN in release task by [@jdx](https://github.com/jdx) in [0ae049b](jdx/mise@0ae049b) [2024.8.9](https://github.com/jdx/mise/compare/v2024.8.8..v2024.8.9) - 2024-08-18 🚀 Features - use registry shortname for mise.toml/install dirs by [@jdx](https://github.com/jdx) in [#2470](jdx/mise#2470) - vfox backend by [@jdx](https://github.com/jdx) in [#2187](jdx/mise#2187) 🐛 Bug Fixes - hide file tasks starting with "." by [@jdx](https://github.com/jdx) in [#2466](jdx/mise#2466) - mise prune removes tool versions which are in use by [@roele](https://github.com/roele) in [#2469](jdx/mise#2469) - cargo_binstall missing from set commands by [@roele](https://github.com/roele) in [#2471](jdx/mise#2471) - only warn if config properties are not found by [@jdx](https://github.com/jdx) in [#2472](jdx/mise#2472) 🚜 Refactor - Asdf -> AsdfBackend by [@jdx](https://github.com/jdx) in [#2467](jdx/mise#2467) - backend repetition by [@jdx](https://github.com/jdx) in [d2f7f33](jdx/mise@d2f7f33) [2024.8.8](https://github.com/jdx/mise/compare/v2024.8.7..v2024.8.8) - 2024-08-17 🚜 Refactor - split asdf into forge+plugin by [@jdx](https://github.com/jdx) in [#2226](jdx/mise#2226) 🧪 Testing - fix home directory for win tests by [@jdx](https://github.com/jdx) in [#2464](jdx/mise#2464) 📦️ Dependency Updates - update rust crate tabled to 0.16.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#2452](jdx/mise#2452) [2024.8.7](https://github.com/jdx/mise/compare/v2024.8.6..v2024.8.7) - 2024-08-16 🐛 Bug Fixes - mise treats escaped newlines in env files differently than dotenvy by [@roele](https://github.com/roele) in [#2455](jdx/mise#2455) - wait for spawned tasks to die before exiting by [@jdx](https://github.com/jdx) in [#2461](jdx/mise#2461) 📦️ Dependency Updates - update dependency vitepress to v1.3.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#2450](jdx/mise#2450)
this is very, very experimental. Don't try to use it. It almost certainly won't work for you yet.